"""
告警监控相关路由模块

该模块提供系统告警信息相关的API端点，用于获取当前系统中的所有告警事件。
所有端点都需要通过JWT令牌进行身份验证，确保只有授权用户可以访问告警信息。
支持分页和过滤功能。
"""

import logging
from fastapi import APIRouter, Depends, Query
from typing import List, Optional
from app.schemas.alarm import Alarm
from app.schemas.user import TokenData
from app.core.security import verify_token
from app.services.alarm_service import AlarmService
from app.core.deps import get_db
from sqlalchemy.orm import Session
from app.schemas.response import ApiResponse

# 获取日志记录器
logger = logging.getLogger(__name__)

router = APIRouter()

@router.get("/", response_model=ApiResponse)
async def get_alarms(
    token_data: TokenData = Depends(verify_token),
    db: Session = Depends(get_db),
    skip: int = Query(0, ge=0, description="跳过的记录数"),
    limit: int = Query(100, ge=1, le=1000, description="返回的记录数限制"),
    level: Optional[str] = Query(None, description="按级别过滤 (critical/warning/info)"),
    status: Optional[str] = Query(None, description="按状态过滤 (pending/resolved/ignored/active)")
):
    """获取所有告警信息端点
    
    返回系统中当前所有未处理的告警事件列表，包括告警级别、发生时间、告警内容等信息。
    支持分页和级别/状态过滤。
    
    Args:
        token_data (TokenData): 从JWT令牌中解析的用户信息，通过依赖注入提供
        db (Session): 数据库会话对象，通过依赖注入提供
        skip (int): 跳过的记录数，默认为0
        limit (int): 返回的记录数限制，默认为100，最大1000
        level (Optional[str]): 按级别过滤告警
        status (Optional[str]): 按状态过滤告警
        
    Returns:
        ApiResponse: 包含告警信息列表的响应
    """
    logger.info(f"用户 {token_data.username} 请求告警信息")
    logger.debug(f"请求参数: skip={skip}, limit={limit}, level={level}, status={status}")
    
    alarm_service = AlarmService(db)
    alarms = alarm_service.get_all_alarms(skip=skip, limit=limit, level=level, status=status)
    logger.info(f"成功获取 {len(alarms)} 条告警信息")
    return ApiResponse(
        success=True,
        data=alarms,
        message="告警信息获取成功"
    )